返回
转到题目
本题目的关键是,我们要观察到,用到了浮点数运算 浮点数运算或除法运算的精度问题是一个复杂问题,我们尽量避免使用 因此,我们可以考虑使用整数运算来解决这个问题。这里为了解决题目,还用到了贪心思想
我们想要单价比竞争对手小,还得让单价尽可能大,最大盈利 我们知道单价计算公式是:
单价 = 总价 / 数量
- 因此为了找到这个最优的符合条件的单价,我们贪心选择总价,因为总价只可能为整数,因此最大化总价即可。符合的总价为
总价-1
- 在这个条件下,单价
向下取整
一定是最优的,因为但凡向上取整
,总价就会比对手高或相等,这是不期望的 这里将单价的比较转移到总价上是为了避免浮点数的计算,因为会精度不准确
代码
#include<bits/stdc++.h>
using namespace std;
int t;
long long a,b,c,d;
int main(){
cin>>t;
while(t--){
cin>>a>>b>>c>>d;
cout<<a -(b*c-1)/d<<" ";
}
return 0;
}